home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / GL / flight / proto.h < prev    next >
C/C++ Source or Header  |  1994-08-01  |  9KB  |  334 lines

  1. /*
  2.  * Copyright 1990, 1991, 1992, 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17.  
  18. /*
  19.  *  flight/proto.h $Revision: 1.12 $
  20.  *
  21.  *  prototypes for flight routines
  22.  */
  23.  
  24. #ifndef __PROTO_H__
  25. #define __PROTO_H__
  26.  
  27.  
  28. /************************** prototypes for color.c ***************************/
  29.  
  30. void setup_colormaps();
  31. void init_color_tables();
  32. void init_normal_colormap(float div);
  33. void save_map();
  34. void restore_map();
  35. unsigned long rgb2cpack(short r, short g, short b);
  36. void load_rgb_table(int i, short r, short g, short b);
  37.  
  38.  
  39. /*************************** prototypes for comm.c ***************************/
  40.  
  41. void partial_plane_move(Plane p0, Plane p1, float percent);
  42.  
  43. int read_infile(Plane p, float current_time);
  44.  
  45.  
  46. /*************************** prototypes for cull.c ***************************/
  47.  
  48. /*
  49.  *  cull_sphere() returns TRUE if the sphere is outside the viewing frustom,
  50.  *  FALSE other wise.
  51.  */
  52. int cull_sphere(float *center, float radius);
  53.  
  54.  
  55. /*
  56.  *  cull_shadow() returns TRUE if the shadow of plane pp is outside the
  57.  *  viewing frustom, FALSE other wise.
  58.  */
  59. int cull_shadow(Plane pp, float xf, float zf);
  60.  
  61.  
  62. /************************** prototypes for flight.c **************************/
  63.  
  64. void calc_clip_planes(Matrix mat, float *eye_point);
  65.  
  66.  
  67. /************************** prototypes for instr.c **************************/
  68.  
  69.  
  70. /*
  71.  *  Add an instrument to the instrument list.
  72.  */
  73. void append_list(int (*draw_func)(), int (*update_func)(), void *data);
  74.  
  75. /*
  76.  *  Erase the instrument list.
  77.  */
  78. void kill_list();
  79.  
  80. /*
  81.  * Initialize the instruments - set up some common data
  82.  */
  83. void init_instruments();
  84.  
  85. /*
  86.  * Set colors according to night/day
  87.  */
  88. void set_instruments_time(int daytime);
  89.  
  90. /*
  91.  *  Call all drawing functions in the draw list after setting up
  92.  *  viewing and lighting matrices.
  93.  */
  94. void draw_instruments();
  95.  
  96.  
  97. /*
  98.  * Call all update functions in update list
  99.  */
  100. void update_instruments(int forceupdate);
  101.  
  102. /*
  103.  * Initialize the altimeter's private data and add its functions to
  104.  * the drawing lists
  105.  */
  106. void init_altimeter(float px, float py, float pz, float size);
  107.  
  108.  
  109. /*
  110.  * Initialize the horizon's private data and add its functions to
  111.  * the drawing lists
  112.  */
  113. void init_horizon(float px, float py, float pz, float size);
  114.  
  115. void init_text_meter(float px, float py, float pz, float size);
  116.  
  117. void init_stores_meter(float px, float py, float pz, float size);
  118.  
  119. void init_airspeedmach_meter(float px, float py, float pz, float size,
  120.           float maxspeed, int machmeter, float maxmach,
  121.           float machstep, int nummachticks);
  122.  
  123. void init_airspeed_meter(float px, float py, float pz, float size,
  124.                  float maxspeed);
  125.  
  126. void init_mach_meter(float px, float py, float pz, float size,
  127.           float maxmach, float machstep, int nummachticks);
  128.  
  129. void init_vertvel_meter(float px, float py, float pz, float size,
  130.                 float maxvel, float divisions, int numsmallticks);
  131.  
  132. void init_radar(float px, float py, float pz, float size);
  133.  
  134. void init_compass(float px, float py, float pz, float size);
  135.  
  136. void init_thrustthrottle(float px, float py, float pz, float size,
  137.              float tickstep, int numticks);
  138.  
  139. void init_fuelgauge(float px, float py, float pz, float size, float maxfuel,
  140.             float tickstep, int numticks, int scale);
  141.  
  142. void set_fuelgauge(float maxfuel, float tickstep, int numticks, int scale);
  143.  
  144. void init_flapspoiler(float px, float py, float pz, float size,
  145.               int maxflap, int flaptickstep, int numflapticks,
  146.               int maxspoiler, int spoilertickstep, int numspoilerticks);
  147.  
  148. void set_flapspoiler(int maxflap, int flaptickstep, int numflapticks,
  149.              int maxspoiler, int spoilertickstep, int numspoilerticks);
  150.  
  151. void init_gear(float px, float py, float pz, float size);
  152.  
  153. void init_gmeter(float px, float py, float pz, float size);
  154.  
  155. void init_wlight(float px, float py, float pz, float size, short *warning, char *label);
  156.  
  157. void draw_plate(object_t *obj, unsigned long mode);
  158.  
  159.  
  160. /************************** prototypes for land1.c ***************************/
  161.  
  162. void init_window_size();
  163.  
  164.  
  165. /*************************** prototypes for mat.c ***************************/
  166.  
  167.  
  168. /*
  169.  *  Turn mat into an identity matrix.
  170.  */
  171. void identify_matrix(Matrix mat);
  172.  
  173. /*
  174.  *  Multiply mat2 * mat1 and return result in mat2
  175.  */
  176. void matrix_post_multiply(Matrix mat1, Matrix mat2);
  177.  
  178. /*
  179.  *  Multiply mat1 * mat2 and return result in mat2
  180.  */
  181. void matrix_multiply(Matrix mat1, Matrix mat2);
  182.  
  183. /*
  184.  *  Premultiply mat by rotation matrix. Return result in mat.
  185.  */
  186. void matrix_rotate(Matrix mat, int angle, char axis);
  187.  
  188. /*
  189.  *  Postmultiply mat by rotation matrix. Return result in mat.
  190.  */
  191. void matrix_post_rotate(Matrix mat, int angle, char axis);
  192.  
  193. /*
  194.  *  Premultiply mat by translation matrix.  Return result in mat.
  195.  */
  196. void matrix_translate(Matrix mat, float x, float y, float z);
  197.  
  198. /*
  199.  *  multiply vector iv by a translation matrix mat.  Return result in ov.
  200.  */
  201. void mult_vec(Matrix mat, float iv[4], float ov[4]);
  202.  
  203. /*
  204.  *  print a matrix
  205.  */
  206. void matrix_print(Matrix mat);
  207.  
  208. /*
  209.  *  find the position 'ov' that is 'len' away from 'iv0' in the direction of
  210.  *  'iv1'.
  211.  */
  212. void vec_len(float *iv0, float *iv1, float len, float *ov);
  213.  
  214.  
  215. /************************* prototypes for messages.c *************************/
  216.  
  217. void display_help();
  218. void overlay_help();
  219. void display_shadow_help();
  220. void overlay_shadow_help();
  221. void display_radar_help();
  222. void overlay_radar_help();
  223. void display_wait();
  224. int pick_plane();
  225. void display_score();
  226. int wait_for_input();
  227. int display_message(char **msg);
  228. void display_message_no_wait(char **msg, int transparent);
  229.  
  230.  
  231. /************************** prototypes for meters.c **************************/
  232.  
  233. void reset_meters();
  234. void redraw_screen();
  235. void init_meters();
  236. void clear_text_display();
  237. void draw_clear_meters();
  238. void draw_slow_meters();
  239. void draw_horizon_meter();
  240. void draw_wing_stall();
  241. void draw_g_limit();
  242. void draw_auto_pilot();
  243. void draw_crash_meters();
  244. void draw_blanking();
  245. void draw_meter(int val);
  246. void draw_meter_bar(int val, int bar);
  247. void draw_radar_objects();
  248. void clear_report_area();
  249. void clear_report();
  250. void add_report_line(float x, float y, char *line);
  251. void draw_report();
  252. void draw_gforce_static();
  253. void draw_gforce();
  254. void init_meter_sizes();
  255. void draw_meter_static();
  256. void old_meters();
  257.  
  258.  
  259. /************************* prototypes for objext.c ***************************/
  260.  
  261. void avg_verts(object_t *obj, float *cx, float *cy, float *cz);
  262. void remap_obj(object_t *obj);
  263. void remap_geom(geometry_t *g);
  264.  
  265.  
  266. /************************** prototypes for radar.c ***************************/
  267.  
  268. void radar_start();
  269. void radar_loop();
  270. void radar_read_queue();
  271. void reset_winodow_size();
  272. void rebuild_ortho();
  273. void do_pan(float dx, float dy);
  274. void reset_radar_hist(radar_hist_t *rh);
  275. Plane radar_find_closest_plane(float x, float z);
  276. radar_hist_t *findit(Plane p);
  277. void radar_text();
  278. void gather_radar_history();
  279. void radar_picture();
  280. void draw_radar_world();
  281. void draw_projectile();
  282. void draw_triangle();
  283.  
  284.  
  285. /************************* prototypes for uflight.c **************************/
  286.  
  287. void my_lookat(float vx, float vy, float vz, float px, float py, float pz,
  288.            Matrix resmat);
  289.  
  290. void set_f14_form(Plane pp);
  291.  
  292. void set_f15_form(Plane pp);
  293.  
  294. void set_f18_form(Plane pp);
  295.  
  296. void set_p38_form(Plane pp);
  297.  
  298. void set_ci_f16_form(Plane pp);
  299.  
  300. /*
  301.  *  draw the planes and their shadows that are visible
  302.  */
  303. void draw_planes(float ex, float ey, float ez,
  304.          int start_plane, int num_planes);
  305.  
  306. void draw_missiles();
  307.  
  308. void draw_buildings(float ex, float ey, float ez);
  309.  
  310. void draw_threats();
  311.  
  312. void draw_everything(float ex, float ey, float ez,
  313.              int numplanes, int draw_self);
  314.  
  315. /*
  316.  *  add an object to the sort obj list
  317.  */
  318. void add_obj(int type, float x, float y, float z, object_t *obj);
  319.  
  320. /*
  321.  *   sort an array (and an associated tag array) in increasing order
  322.  */
  323. void sink_sort(int n, float *array, void **array_tag);
  324.  
  325. /*
  326.  *  generate a random number x, where -maxr <= x <= maxr
  327.  */
  328. int flight_random(int maxr);
  329.  
  330. float range(float x1, float y1, float z1, float x2, float y2, float z2);
  331.  
  332.  
  333. #endif /* __PROTO_H__ */
  334.